package main
import (
	"fmt"
	"strconv"
)
func main() {
	var str1 string = "125"
	// 第一个参数: 需要转换的数据
	// 第二个参数: 转换为几进制
	// 第三个参数: 转换为多少位整型
	// 注意点: ParseInt函数会返回两个值, 一个是转换后的结果, 一个是错误
	// 如果被转换的数据转换之后没有超出指定的范围或者不能被转换时,
	// 那么错误为nil, 否则错误不为nil
	// 将字符串"125"转换为10进制的int8
	num1, err := strconv.ParseInt(str1, 10, 8)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(num1)

	var str2 string = "150"
	// 将字符串"150"转换为10进制的int8
	// 由于int8的取值范围是-128~127, 所以转换之后超出了指定的范围, error不为nil
	num2, err := strconv.ParseInt(str2, 10, 8)
	if err != nil {
		fmt.Println(err)
	}
	fmt.Println(num2)

	var str3 string = "3.1234567890123456789"
	// 第一个参数: 需要转换的数据
	// 第二个参数: 转换为多少位小数, 32 or 64
	// ParseFloat同样有两个返回值, 如果能够正常转换则错误为nil, 否则不为nil
	num3, err := strconv.ParseFloat(str3, 32)
	if err != nil {
		// 例如: 把字符串"3.14abc"转换为小数就会报错, 因为"3.14abc"不是一个小数
		fmt.Println(err)
	}
	fmt.Println(num3)

	var str4 string = "true"
	// 第一个参数: 需要转换的数据
	// ParseBool同样有两个返回值, 如果能够正常转换则错误为nil, 否则不为nil
	num4, _ := strconv.ParseBool(str4)
	fmt.Println(num4)
}